WebBrowser nekorektni chovani

Otázka od: MUDr. Patrik VALENTA

12. 10. 2002 15:08

Zdravim.
Nevite nekdo cim je zpusobeno ze :
mam-li v WebBrowser komponente nactenou stranku s formularem tak v ni
obsazeny
prvek <textarea> neakceptuje klavesu Enter pro odradkovani.
V IE tato stranka normalne funguje.

tady je kdyztak kod html:
<form method=post>
<Select name="komu">
<option value="Valik">Valik</option>
</select><br>
<b>Message:</b><br>
<textarea name="text" cols="54" rows="6"></textarea><br>
<input type=submit value="Send">
</form>

valik

Odpovedá: Petr Vones

13. 10. 2002 16:13

From: "MUDr. Patrik VALENTA" <valentapat@volny.cz>
> Nevite nekdo cim je zpusobeno ze :
> mam-li v WebBrowser komponente nactenou stranku s formularem tak v ni
> obsazeny
> prvek <textarea> neakceptuje klavesu Enter pro odradkovani.
> V IE tato stranka normalne funguje.

Tento problem je popsan tady, bohuzel ten kod nejde ani prelozit:
http://community.borland.com/article/0,1410,6302,00.html

Vypada to, ze by to mohlo fungovat takto, nenasel jsem k tomu ale zadnou dalsi
dokumentaci, takze je to tvoreno spise metodou pokus-omyl upravou toho kodu z
vyse zmineneho odkazu:

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FOldBrowserWndPoc: TWndMethod;
    procedure WebBrowserWndProc(var Message: TMessage);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  ActiveX;

procedure TForm1.WebBrowserWndProc(var Message: TMessage);
var
  Msg: TMsg;
begin
  if (Message.Msg >= CN_BASE + WM_KEYFIRST) and (Message.Msg <= CN_BASE +
WM_KEYLAST) then
  begin
    Msg.HWnd := WebBrowser1.Handle;
    Msg.Message := Message.Msg - CN_BASE;
    Msg.WParam := Message.WParam;
    Msg.LParam := Message.LParam;
    Msg.Time := GetMessageTime;
    Msg.Pt.X := $115DE1F1;
    Msg.Pt.Y := $115DE1F1;
    if (Message.WParam <> VK_RETURN) and
      ((WebBrowser1.DefaultInterface as
IOleInPlaceActiveObject).TranslateAccelerator(Msg) = S_OK) then
      Message.Result := 1
    else
      Message.Result := 0;
  end
  else
    FOldBrowserWndPoc(Message);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOldBrowserWndPoc := WebBrowser1.WindowProc;
  WebBrowser1.WindowProc := WebBrowserWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  WebBrowser1.WindowProc := FOldBrowserWndPoc;
end;


Petr Vones